package com.peng.sparktest.sparksql

import org.apache.spark.sql.SparkSession

/**
 * 只开启hive支持，但没有介入hive的metastore， 此时，hive实际会启动自带的derby数据库进行存储元数据
 */
object SparkSQl04_StandaloneByHive {
  def main(args: Array[String]): Unit = {
    val session: SparkSession = SparkSession.builder()
      .appName("onhive")
      .master("local")
      .config("spark.sql.shuffle.partitions", "1")
      .config("spark.sql.warehouse.dir", "E:/big_data/warehouse") //设置数据表存储位置
      .enableHiveSupport()
      .getOrCreate()

    session.sparkContext.setLogLevel("INFO")
    // spark on hive 执行sql 的性质和在hive中执行是一样的，因此会有数据库的概念。。。如果不指定，默认的操作也是在default数据库中

    import session.sql

    println("==========================遵循HIVE,数据关于库的作用域==================================")
    //    sql("create database mydb") //默认在default库中
    //
    //    session.catalog.listTables().show()
    //
    //    sql("use mydb") //切换数据库
    //
    //    sql("create table spark_table01(name string,age int)") //此时的创建，就是在mydb库中的。。。
    //    session.catalog.listTables().show()

    println("==========================插入数据==================================")
    sql("use mydb") //切换数据库

    sql("select * from spark_table01").show()

    sql("insert into spark_table01 values('张三',20),('李四',28)")

    sql("select * from spark_table01").show()
  }

}
